package design.mode.dispatcher.examine.file;

import design.mode.dispatcher.util.FileUtils;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;

import java.io.*;
import java.util.zip.GZIPOutputStream;

public class FileWriterTest {
    private static final String diskPath = "c:/temp/log/";
    private static final String zipPath = "c:/temp/zipData/";
    private static final String errorPath = "c:/temp/error/";

    public static void main(String[] args) throws IOException {
        String content = "Java程序中的换行符一般使用表示，它是一个转义字符，表示换行符。根据操作系统的不同，换行符的实际表示可能不同：在Windows系统中，换行符由两个字符“" +
                "”表示，即回车符和换行符。" +
                "在Unix/Linux系统中，换行符只由一个字符表示，即换行符。在Mac OS Classic（Mac OS 9及之前版本）中，换行符只由一个字符表示，即回车符。" +
                "因此，为了使Java程序的换行符在不同的操作系统上都能正确识别，可以使用Java提供的" +
               "System.lineSeparator()方法获取当前系统的换行符。该方法会返回一个字符串，表示当前系统的换行符。" +
              "在Windows系统中，使用回车符和换行符组合来表示一行的结束，即行尾是。而在Unix/Linux系统中，一行的结束只需要使用换行符即可。";
        while (true){
            FileUtils.writeContentToDisk(content,errorPath,zipPath,true);
            System.out.println("写入文件成功");
        }
    }
    /**
     * 将文件打包成tgz压缩包并移动至指定目录下
     *
     * @param sourceFile      源文件
     * @param destinationFile 目标文件路径
     * @throws IOException
     */
    private static void createTarGz(File sourceFile, File destinationFile) throws IOException {
        try (TarArchiveOutputStream tarOutput = new TarArchiveOutputStream(new GZIPOutputStream(new FileOutputStream(destinationFile)))) {
            TarArchiveEntry tarEntry = new TarArchiveEntry(sourceFile, sourceFile.getName());
            tarOutput.putArchiveEntry(tarEntry);

            try (BufferedInputStream input = new BufferedInputStream(new FileInputStream(sourceFile))) {
                byte[] buffer = new byte[2048];
                int bytesRead;
                while ((bytesRead = input.read(buffer)) != -1) {
                    tarOutput.write(buffer, 0, bytesRead);
                }
            }

            tarOutput.closeArchiveEntry();
        }
    }
}
